<?php
/**
* Copyright 2009 Waag Society <http://www.waag.org>
* This file is part of Annotrax.
*
* Annotrax is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License,
* or (at your option) any later version.
*
* Annotrax is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Annotrax.
* If not, see http://www.gnu.org/licenses/gpl.html
*/
class Default_Model_UserMapper extends At_Model_Mapper{
    protected $tableName = 'user'; //WHOOPS this is used for the wrong purposes

	public function findByIdentifier( Default_Model_User $user ){
		$select = $this->getTable()
						->select()
						->where('identifier =?', $user->identifier )
		;

		$result = $this->getTable()->fetchRow( $select );

        if( null !== $result ){
            foreach( $result->toArray() as $key => $value ){
                $user->$key = $value;
            }
        }
	}

    public function save( Default_Model_User $user ){
        $columns    = array('identifier', 'nickname', 'fullname', 'email');
        $insert     = array();

        foreach( $columns as $key ){
            $insert[$key] = $user->$key;
        }

        if( null === $user->id ){
            $insert['inserted'] = new Zend_Db_Expr('NOW()');

            $this->getTable()->insert( $insert );
            $user->id = $this->getTable()
                        ->getAdapter()
                        ->lastInsertId()
            ;
        }
        else{
            $this->getTable()->update( $insert, array( 'id = ?' => $user->id ) );
        }
        return $user;
    }
}
